#include<stdio.h>
#include<math.h>

void floodfill(int[][182], int, int, int, int, int);

int main(){
  int cases, i, j, k;
  char bitmap[182][182];
  int m, n, white[33125][2], wc;
  int a[182][182];

  
  scanf("%d", &cases);
  while(cases--){
    wc=0;
    scanf("%d %d", &m, &n);

    i=0;
    j=0;
  
    while(i<m){
      scanf("%s",bitmap[i++]);
    }

    for(i=0;i<m;i++){
      for(j=0;j<n;j++) {
	if(bitmap[i][j]=='1'){
	  white[wc][0]=i;
	  white[wc++][1]=j;
	  a[i][j]=0;
	}else{
	  a[i][j]=999;
	}
      }
    }
    for(k=0;k<wc;k++){
      floodfill(a, white[k][0], white[k][1], 0, m, n);
    }

    for(i=0;i<m;i++)
      {
	for(j=0;j<n;j++){
	  printf("%d ",a[i][j]);
	}
	printf("\n");
      }
  }
  return 0;
}

void floodfill(int a[][182], int i, int j, int val, int m, int n){
  a[i][j]=val;
  
  //top
  if(i-1>=0 && a[i-1][j]>val+1){
    floodfill(a, i-1, j, val+1, m, n);
  }

  //bottom
  if(i+1<m && a[i+1][j]>val+1){
    floodfill(a, i+1, j, val+1, m, n);
  }

  //left
  if(j-1>=0 && a[i][j-1]>val+1){
    floodfill(a, i, j-1, val+1, m, n);
  }

  //right
  if(j+1<n && a[i][j+1]>val+1){
    floodfill(a, i, j+1, val+1, m, n);
  }
}
